<script setup>

import {ref} from 'vue'
import {isNull} from "@/utils/validate.js";
import {getConMyFileInfo} from "@/api/contract/contractFile.js";
import pdfCtrlUtil from "@/plugins/pageoffice/pageoffice-pdf.js";
import pageofficeCtrlUtil, {callbackPOParentFunction} from "@/plugins/pageoffice/pageoffice-word-excel.js";
import PageOfficeFile from "@/components/PageOfficeFile/index.vue";

const poHtml = ref('')
const isEdit = ref(false)
let conId = undefined
//组装控件所需的自定义按钮的参数,
// 数组的第一个元素： 按钮的标题（如果设置为 "-"，表示此按钮是分隔线）；第二个元素： 点击当前按钮时触发的 JavaScript 函数名；第一个元素： 按钮图标的索引；
//组装pdf控件所需的自定义按钮参数
const customButtonsForPDF = [
  ["另存为", "saveAsFile", 1],
  ["-", "", 0]
]
//组装Word所需的自定义按钮参数
const customButtonsForPO = [
  ["保存", "save", 1],
  ["另存", "saveAsFile", 11],
  ["-", "", 0],
  ["对比文件", "compareFile", 13],
  ["启用/取消修订", "setTrackRevisions", 10],
  ["接受所有修订", "acceptAllRevisions", 5],
  ["显示/隐藏痕迹", "showOrHideRevisions", 9],
  ["下一个", "nextRevision", 12],
  ["上一个", "previousRevision", 15],
  ["-", "", 0],
]

onMounted(() => {
  //获取pageoffice客户端传过来的参数
  conId = JSON.parse(pageofficectrl.WindowParams || pdfctrl.WindowParams)
  getFile()
})

function getFile() {
  getConMyFileInfo(conId).then(result => {
    poHtml.value = result.html
    isEdit.value = result.isEdit
    //挂载PageOfficeCtrl 或 PDFCtrl控件需要调用的函数，例如控件触发的事件、自定义按钮触发的函数等。
    if (result.isPdf) {
      //打开pdf文件
      pdfCtrlUtil.jsFunctionMounted(customJSFunctionsForPDF, customButtonsForPDF)
    } else {
      //打开Word文件
      pageofficeCtrlUtil.jsFunctionMounted(customJSFunctions, customButtonsForPO)
    }
  })
}

const customJSFunctionsForPDF = {
  OnPDFCtrlInit: () => {
    // 添加自定义按钮
    pdfCtrlUtil.addCustomButtons(customButtonsForPDF)
  }
}

const customJSFunctions = {
  //控件初始化事件，函数名是指定的，不可修改，此处根据实际情况重写OnPageOfficeCtrlInit事件代码
  OnPageOfficeCtrlInit: () => {
    // 添加自定义按钮，这些自定义按钮执行的js函数需要在 window.POPageMounted 挂载
    pageofficeCtrlUtil.addCustomButtons(isEdit.value ? customButtonsForPO : null)
  },
  //部分自定义按钮执行的js函数
  save: () => {
    const revisionCount = pageofficeCtrlUtil.getRevisionCount()
    //设置保存地址
    pageofficectrl.SaveFilePage = '/con/my/updateAuditFile?id=' + conId + '&revisionCount=' + revisionCount
    //执行保存
    pageofficectrl.WebSave()
    //服务端返回保存结果
    let strCustomSaveResult = pageofficectrl.CustomSaveResult
    if ('ok' === strCustomSaveResult) {
      //刷新父页面的痕迹数量
      const params = {revisionCount: revisionCount}
      callbackPOParentFunction(params, 'refreshRevisionCount', () => {
        pageofficeCtrlUtil.msgSuccess('保存成功')
      })
    }
  },
  compareFile: () => {
    pageofficectrl.word.ShowCompareView(0)
    const revisionsJson = pageofficectrl.word.RevisionsAsJson
    const revisionCount = isNull(revisionsJson) ? 0 : JSON.parse(revisionsJson).length

    //设置caption值
    let strInitCaption = pageofficectrl.Caption
    if (strInitCaption.lastIndexOf("【") >= 0) {
      strInitCaption = strInitCaption.substring(0, strInitCaption.lastIndexOf("【") - 1)
    }
    pageofficectrl.Caption = strInitCaption + "【共有 " + revisionCount + " 处变动】"
  },
}

</script>

<template>
  <PageOfficeFile :poHtml="poHtml"/>
</template>

